/*
 * DataLight.c
 *
 *  Created on: 2016年4月16日
 *      Author: chenxx
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include "wiringPi.h"

#define  a  1
#define  b  15
#define  c   9
#define  d  25
#define  e  24
#define  f  16
#define  g   8
#define  p  7

int pinNumber[] = {a,b,c,d,e,f,g,p};

int pinCount = 8;

#define  d1  27
#define  d2  28
#define  d3  29
#define  d4  23

const int dp[] = {d1,d2,d3,d4};

int dpCount = 4;

int numbers[] = {0x3f, 0x21, 0x76, 0x5e, 0x4d, 0x5b, 0x7b, 0x0e, 0x7f, 0x5f};


void turnOn(int pin)
{
    digitalWrite(pin, 1);
}

void turnOff()
{
	int i = 0;
	for(i = 0; i < 8; i ++)
	{
		digitalWrite(pinNumber[i], 0);
	}
}

void setLight(int number)
{
	
	switch(number)
	{
		case 1:
			turnOn(b);
			turnOn(c);

			break;

		case 2:
			turnOn(a);
			turnOn(b);
			turnOn(g);
			turnOn(e);
			turnOn(d);

			break;
		case 3:
			turnOn(a);
			turnOn(b);
			turnOn(g);
			turnOn(c);
			turnOn(d);

			break;
		case 4:
			turnOn(b);
			turnOn(c);
			turnOn(f);
			turnOn(g);

			break;
		case 5:
			turnOn(a);
			turnOn(f);
			turnOn(g);
			turnOn(d);
			turnOn(c);
			break;
		case 6:
			turnOn(a);
			turnOn(f);
			turnOn(g);
			turnOn(c);
			turnOn(d);
			turnOn(e);
			break;
		case 7:
			turnOn(a);
			turnOn(b);
			turnOn(c);
			break;
		case 8:
			turnOn(a);
			turnOn(b);
			turnOn(c);
			turnOn(d);
			turnOn(e);
			turnOn(f);
			turnOn(g);
			break;
		case 9:
			turnOn(a);
			turnOn(b);
			turnOn(c);
			turnOn(d);
			turnOn(f);
			turnOn(g);
			break;
		case 0:
			turnOn(a);
			turnOn(b);
			turnOn(c);
			turnOn(d);
			turnOn(e);
			turnOn(f);
			break;

		default:
			break;
	}
}


void choose(int dl)
{
	int i;
	for(i = 0; i < 4; i++)
	{
		if(i == dl)
		{
			pinMode(i, OUTPUT);
			digitalWrite(i, 1);
		}
		else
		{
			pinMode(i, INPUT);
			digitalWrite(i, 0);
		}
	}
}

void init()
{
	int i;

	for(i = 0 ; i < pinCount; i++)
	{
		pinMode(pinNumber[i], OUTPUT);
	}

	for(i = 0 ; i < dpCount; i++)
	{
		pinMode(dp[i], OUTPUT);
	}
}

int main (int argc,char* argv[])
{

	int seg = 0, i =0;

  if (argc < 2) {
    printf("Usage example: 1 means on, 0 means off \n");
    return 1;
  }

  //int flag = atoi(argv[1]);

  if (-1 == wiringPiSetup()) {
    printf("Setup wiringPi failed!");
    return 1;
  }

	init();

	
	
	
	while(1)
	{
		for(i = 0; i < dpCount; i++)
		{
			for (seg = 0; seg < 7; seg++) 
			{
				digitalWrite(pinNumber[seg], LOW);
			}
			
			digitalWrite(dp[i], LOW);
			
			setLight(i);
			
			
			delay(5);
			
			digitalWrite(dp[i], HIGH);
		}
	}

  return 0;
}